package be.vdab.Servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import be.vdab.dao.ReadSqlDAO;
import be.vdab.entities.Member;

/**
 * Servlet implementation class NieuweKlantServlet
 */
@WebServlet("/nieuweklant.htm")
public class NieuweKlantServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String VIEW = "/WEB-INF/JSP/nieuweklant.jsp";
	private static final String REDIRECT_URL = "/nieuweklant.htm";
	private static final String REDIRECT_TOEGEVOEGD_URL = "/bevestigen.htm"; 
	private ReadSqlDAO sqlDAO = new ReadSqlDAO();
	
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	HttpSession session = request.getSession();
		
    	if (session.getAttribute("fout") != null){
    		session.setAttribute("fout", session.getAttribute("fout"));
    	}
		
    	RequestDispatcher dispatcher = request.getRequestDispatcher(VIEW);
	    dispatcher.forward(request, response);	
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		session.setAttribute("aangemeld", false);
		
		List<String> fout = new ArrayList<>();
		
		Member member = new Member();
		
		member.setVoornaam((String) request.getParameter("voornaam"));
		member.setFamilienaam((String) request.getParameter("familienaam"));
		member.setStraat((String) request.getParameter("straat"));
		member.setHuisNr((String) request.getParameter("huisnr"));
		member.setPostcode((String) request.getParameter("postcode"));
		member.setGemeente((String) request.getParameter("gemeente"));
		member.setGebruikersNaam((String) request.getParameter("gebruikersNaam"));
		member.setPaswoord((String) request.getParameter("paswoord"));
		String herhaalPaswoord = (String) request.getParameter("herhaalPaswoord");
		
		boolean test = sqlDAO.isReedsGebruikersNaam(member.getGebruikersNaam());
		if (test){
			fout.add("Gebruikersnaam is reeds in gebruik");
		}
		
		
		if (member.getVoornaam() == ""){
			fout.add("Voornaam niet ingevuld");
		} else {
			member.getVoornaam();
		}
		if (member.getFamilienaam() == ""){
			fout.add("Familienaam niet ingevuld");
		} else {
			member.getFamilienaam();
		}
		if (member.getStraat() == ""){
			fout.add("Straat niet ingevuld");
		} else {
			member.getStraat();
		}
		if (member.getHuisNr() == ""){
			fout.add("Huisnr niet ingevuld");
		} else {
			member.getHuisNr();
		}
		if (member.getPostcode() == ""){
			fout.add("Postcode niet ingevuld");
		} else {
			member.getPostcode();
		}
		if (member.getGemeente() == ""){
			fout.add("Gemeente niet ingevuld");
		} else {
			member.getGemeente();
		}
		if (member.getGebruikersNaam() == ""){
			fout.add("Gebruikersnaam niet ingevuld");
		} else {
			member.getGebruikersNaam();
		}
		if (member.getPaswoord() == ""){
			fout.add("Paswoord niet ingevuld");
		} else {
			member.getPaswoord();
		}
		if (!member.getPaswoord().equals(herhaalPaswoord)){
			fout.add("Paswoorden komen niet overeen");
		} 
		
		session.setAttribute("member", member);
		
		if (!fout.isEmpty()){
			session.setAttribute("fout", fout);
			response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + REDIRECT_URL));
		} else {
			// add person
			
			sqlDAO.addMember(member);
			session.setAttribute("aangemeld", true);
			response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + REDIRECT_TOEGEVOEGD_URL));
		}
		
		
		
		
	}
}
